"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/2/18 9:55
@Description :   类型注解的使用
 规范变量的使用，减少程序运行时的异常
 如果没有按照类型注解的约束进行赋值操作，则会添加黄色背景作出提示，但是不会阻止程序的运行，类型注解仅仅只是提示
"""
from typing import Union


#  计算两个数据的和
def fn1(num1: int, num2: int):
    return num1 + num2


# TypeError: unsupported operand type(s) for +: 'int' and 'str'
result = fn1(1, 2)
print(result)

#  以上问题 可以通过在定义变量时添加类型注解解决  变量名:类型 = 值  简单类型限定
str_info: str = 'hello'
# str_info = True

# for item in str_info:
#     print(item)

num1: int = 1
num1 = 2
bool_1: bool = False
bool_1 = True

#  容器类型
list_names: list = ['zhangsan', 'lisi', 'wangwu']
# list_names: list[str] = ['zhangsan', 'lisi', 'wangwu']
list_names.append(1)

# list_names = 'zhangsan'
print(list_names)
tuple_names: tuple = ('zhangsan', 'lisi', 'wangwu')
# tuple_names = 'zhangsan'
dict_student: dict = {'zhangsan': 'lisi', 'lisi': 'wangwu'}
# dict_student = 1

#  注释类型注解
name = '1'  # type: int

# 联合类型注解
var1: Union[int, str] = '1'
var1 = 1


# var1 = 1.2

#   Class类型  后续在讲解

#  str1: str, str2: str 约束参数类型      -> str 约束返回值类型
def fn2(str1: str, str2: str) -> str:
    return str1 + str2


print(fn2('hello', '1'))
